﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Libreria.DAL;
using System.ComponentModel.DataAnnotations;

namespace Libreria.SICOM.Modelo
{
    [CAD(true, CAD.TiposBD._SQLServer,"RANGOS_DE_CUALIDAD")]
    public class RangodeCualidad
    {
        public MOR accesoADatos;
        private Int32? identificador;
        private Int32? iddevariable;
        private String valor;

        
         public RangodeCualidad()
         {

         }
         public RangodeCualidad(String CadenaDeConexion)
         {
             this.accesoADatos = MOR.Instance(CadenaDeConexion);
         }

        [Tipo(Tipo.TiposSQLServer._int, "RAN_ID", true, false)]
        [Required(ErrorMessage = " *** Campo Valor Numerico obligatorio***")]
        public Int32? Identificador
        {
            get { return identificador; }
            set { identificador = value; }
        }

        [Tipo(Tipo.TiposSQLServer._int, "VAR_ID")]
        [Required(ErrorMessage = " *** Campo Variable obligatorio***")]
        public Int32? Iddevariable
        {
            get { return iddevariable; }
            set { iddevariable = value; }
        }

        [Tipo(Tipo.TiposSQLServer._varchar, "RAN_VALOR")]
        [Required(ErrorMessage = " *** Campo Rango Cualitativo obligatorio***")]
        public string Valor
        {
            get { return valor; }
            set { valor = value; }
        }

        // Métodos de abstracción de datos
        public void crear()
        {
            this.accesoADatos.crearRegistro(this);
        }

        public List<RangodeCualidad> consultar()
        {
            List<Object> registros = this.accesoADatos.consultarRegistros(this, false);
            List<RangodeCualidad> resultado = new List<RangodeCualidad>();
            foreach (Object registro in registros)
            {
                resultado.Add((RangodeCualidad)registro);
            }
            return resultado;
        }

        public RangodeCualidad consultarPorIdentificador(Int32? identificador)
        {
            this.identificador = identificador;
            List<Object> registros = this.accesoADatos.consultarRegistros(this, true);
            RangodeCualidad resultado = null;
            if (registros != null)
            {
                if (registros.Count == 1)
                {
                    resultado = (RangodeCualidad)registros[0];
                }
            }
            return resultado;
        }

        public void actualizar()
        {
            this.accesoADatos.actualizarRegistro(this);
        }

        public void eliminar()
        {
            this.accesoADatos.borrarRegistro(this);
        }
    }
}
